import request from '@/utils/http';

/**
 * 菜单相关接口
 */
const menuApi = {
  /**
   * 获取菜单列表
   * @param {Object} params - 查询参数
   * @returns {Promise} 请求结果
   */
  getMenuList(params = {}) {
    const timestamp = new Date().getTime();
    const finalParams = { ...params, _t: timestamp };
    
    return request({
      url: '/menus',
      method: 'get',
      params: finalParams
    });
  },

  /**
   * 获取用户菜单
   * @param {Object} params - 查询参数
   * @returns {Promise} 请求结果
   */
  getUserMenus(params = {}) {
    const timestamp = new Date().getTime();
    const finalParams = { ...params, _t: timestamp };
    
    return request({
      url: '/menus/user',
      method: 'get',
      params: finalParams
    });
  },

  /**
   * 获取菜单详情
   * @param {Number} id - 菜单ID
   * @returns {Promise} 请求结果
   */
  getMenuDetail(id) {
    return request({
      url: `/menus/${id}`,
      method: 'get'
    });
  },

  /**
   * 创建菜单
   * @param {Object} data - 菜单数据
   * @returns {Promise} 请求结果
   */
  createMenu(data) {
    return request({
      url: '/menus',
      method: 'post',
      data
    });
  },

  /**
   * 更新菜单
   * @param {Number} id - 菜单ID
   * @param {Object} data - 菜单数据
   * @returns {Promise} 请求结果
   */
  updateMenu(id, data) {
    return request({
      url: `/menus/${id}`,
      method: 'put',
      data
    });
  },

  /**
   * 删除菜单
   * @param {Number} id - 菜单ID
   * @returns {Promise} 请求结果
   */
  deleteMenu(id) {
    return request({
      url: `/menus/${id}`,
      method: 'delete'
    });
  },
  
  // 获取菜单权限
  getMenuPermissions() {
    console.log('API: 调用getMenuPermissions接口');
    
    return request({
      url: '/menus/permissions',
      method: 'get'
    });
  },
  
  /**
   * 获取角色的菜单权限
   * @param {Number} roleId - 角色ID
   * @returns {Promise} 请求结果
   */
  getRoleMenus(roleId) {
    console.log('API: 调用getRoleMenus接口，角色ID:', roleId);
    
    // 添加时间戳防止缓存
    const timestamp = new Date().getTime();
    
    return request({
      url: `/roles/${roleId}/permissions`,
      method: 'get',
      params: { _t: timestamp }
    });
  },
  
  /**
   * 更新角色的菜单权限
   * @param {Number} roleId - 角色ID
   * @param {Array} permissions - 权限ID数组
   * @returns {Promise} 请求结果
   */
  updateRoleMenus(roleId, permissions) {
    console.log('API: 调用updateRoleMenus接口，角色ID:', roleId, '权限ID:', permissions);
    
    // 尝试使用 snake_case 键名，这在 Go 后端中很常见
    const data = {
      menu_ids: permissions // 使用 menu_ids 作为键名
    };
    
    console.log('API: 发送给后端的数据体 (尝试 menu_ids):', data);

    return request({
      url: `/roles/${roleId}/permissions`,
      method: 'put',
      data: data
    });
  }
};

export default menuApi; 